<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Classify extends Model
{
    protected $fillable=['name','pid','level'];
//    public function attribute(){
//         return   $this->belongsToMany(Attribute::class,'attribute_classify','classify_id','attribute_id');
////        $this->morphMany(AttributeClassify::class,'attribute_classify',1,1)
//    }
    //分类的子分类关联父分类
    public function classifyFather(){
        return $this->belongsTo(Classify::class,'pid','id');
    }
    //父分类关联子分类
    public function getSon(){
        return $this->hasMany(Classify::class,'pid','id');
    }
    //获得分类的子分类
    public function classifySon($id){
  
//        $id 是分类的父级id,是一级,现在需要找二级
       $classify=Classify::where('pid',$id)->get();
       return $classify;
    }
//    根据商品分类获得分类下的商品
public function getGoods($classify,$attribute,$minprice,$maxprice){
    // 找出商品表中的所有商品
    $allGoods = Goods::get();
    // 循环所有商品,判断当前点击的分类id是否在每个商品的classify_id里面,如果在,就讲对应商品id取出来,放入一个新数组中
    $goodsIds = [];
    foreach ($allGoods as $good) {
        if (in_array($classify['id'], $good['classify_id'])) {
            $goodsIds[] = $good['id'];
        }
    }
  /*
   * 1.如果有没有价格,肯定也没有属性,标识不是点击搜索进方法的
   * 2.如果有价格,没有属性,表示是经过搜索来的,只是没勾选属性,只需要判断符合价格的商品
   * 3.如果有价格,有属性,表示搜索时勾选了属性和价格
   */
        
        // 判断$attribute是否为null,如果为null,代表没有选择属性,直接好当前分类下的商品
    //1.第一种情况,如果有价格有属性进判断
      if($minprice){
          if ($attribute){
              // 找出货品表中商品id在$goodsIds数组中的货品数据
              $huopin = Product::whereIn('goods_id',$goodsIds)->get();
              // 循环所有的货品,用每个货品的属性组合,和$attribute合并,去重,然后比较是否和原来的相同,如果相同,将对应货品的商品id拿出来
              //定义一个空数组用来接收满足筛选条件的商品id
              $goodsIds = [];
              foreach ($huopin as $value) {
                  //合并去重,定义一个新变量
                  $hebing = array_unique(array_merge($value['attributeArr'],$attribute));
                  // he原来的比较
                  if ($hebing == $value['attributeArr']){
                      $goodsIds[] = $value['goods_id'];
                  }
              }
              // 将获取到的商品id去重
              $goodsIds = array_unique($goodsIds);
              //有价格没属性,表示提交了搜索且没勾选属性
          }elseif(!$attribute){
              $goodid=Goods::where('price','>',$minprice)->where('price','<',$maxprice)->pluck('id')->toArray();
          }
//          获取价格满足条件的商品
          $goodid=Goods::where('price','>',$minprice)->where('price','<',$maxprice)->pluck('id')->toArray();
          $goodsIds=array_intersect($goodid,$goodsIds);
      }
    // 再从商品表中找出id再上面数组中的商品数据,分页
//            dd($classify->id);
     return $goodsIds;
}
}
